home *** CD-ROM | disk | FTP | other *** search
/ Young Minds / Young Minds Interactive CD-ROM.ISO / mpss / consolep.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-07-20  |  5.3 KB  |  257 lines

  1.  
  2. /*******************************************************************************
  3. ********************************************************************************
  4. ********************************************************************************
  5.  
  6. PERMISSION TO COPY THIS SOFTWARE IS HEREBY GIVEN BY THE AUTHOR PROVIDED THAT
  7. THIS LEADING MESSAGE IS INCLUDED IN ALL OF THE RELEVANT SOURCE FILES.
  8.  
  9.         P. SCHMITZ, UNIVERSITY OF KEELE, MAY 1988.
  10.  
  11.  
  12. ********************************************************************************
  13. ********************************************************************************
  14. *******************************************************************************/
  15. #include "header.h"
  16.  
  17. /*
  18. *What follows are the routines to draw the console and plot all the
  19. *data onto it. plot1, plot2 are for the message window.
  20. */
  21.  
  22. plot1(cp,p)
  23. register struct player *cp;
  24. char p[];
  25. {
  26. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  27. poscurs(cp,20,21);
  28. write(cp->fd,p,57);
  29. beep(cp);
  30. }
  31.  
  32. plot2(cp,p)
  33. register struct player *cp;
  34. char p[];
  35. {
  36. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  37. poscurs(cp,20,22);
  38. write(cp->fd,p,57);
  39. }
  40.  
  41. broadcast(r)
  42. char r[];
  43. {
  44. struct player *o;
  45.  
  46. o=startlist;
  47. if (noofplayers==1) return(0);
  48.  
  49. while (o!=NULL)
  50.     {
  51.     plot1(o,"         Uhura : Message from Starfleet Command Sir!     ");
  52.     plot2(o,r);
  53.     o=o->next;
  54.     }
  55. }
  56.  
  57. plotstatus(cp,x)
  58. register struct player *cp;
  59. int x;
  60. {
  61. cp->stat=x;
  62. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  63. poscurs(cp,9,22);
  64. switch(x)
  65. {
  66. case 0: write(cp->fd,"Com Link :",10); break;
  67. case 1: write(cp->fd,"Prefix No.",10); break;
  68. case 2: write(cp->fd,"RED ALERT ",10); break;
  69. case 3: write(cp->fd,"  green   ",10); break;
  70. case 4: write(cp->fd," damaged! ",10); break;
  71. case 5: write(cp->fd,"auto-pilot",10); break;
  72. case 6: write(cp->fd,"Locking...",10); break;
  73. case 7: write(cp->fd," docked   ",10); break;
  74. case 8: write(cp->fd," orbiting ",10); break;
  75. case 9: write(cp->fd," scanning ",10); break;
  76. case 10:write(cp->fd,"On planet ",10); break;
  77. case 11:write(cp->fd,"Help sheet",10); break;
  78. case 12:write(cp->fd,"DEAD!!!!!!",10); break;
  79. default: break;
  80. }
  81. }
  82.  
  83. plotcloakingdevice(cp)
  84. register struct player *cp;
  85. {
  86. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  87. poscurs(cp,15,14); 
  88. if (cp->cloakingdevice)
  89. write(cp->fd,"on ",3);
  90. else
  91. write(cp->fd,"off",3);
  92. }
  93.  
  94. plotshields(cp)
  95. register struct player *cp;
  96. {
  97. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  98. poscurs(cp,15,16); 
  99. if (cp->shields)
  100. write(cp->fd,"on ",3);
  101. else
  102. write(cp->fd,"off",3);
  103. }
  104.  
  105. plotenergy(cp)
  106. register struct player *cp;
  107. {
  108. char energy[5];    
  109.  
  110. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  111. if (cp->energy>0)
  112. {
  113. sprintf(energy," %4d",cp->energy);
  114. poscurs(cp,14,7); 
  115. write(cp->fd,energy,5);
  116. } else
  117. {
  118. if ((cp->stat<12))
  119. {
  120. plot1(cp,"  You ran out of energy and life support systems failed  ");
  121. plot2(cp,"  Captain. I'm afraid, theres no survivors.You blew it.  ");
  122. if (cp->reason>0) cp->reason= -2;
  123. finish(cp);
  124. }
  125. }
  126. }
  127.  
  128. plotbattleenergy(d)
  129. struct player *d;
  130. {
  131. char energy[5];    
  132.  
  133. if ((d->id==ROMID)||(d->id==KLINGID)) return(0);
  134. sprintf(energy," %4d",d->energy);
  135. poscurs(d,14,7); 
  136. write(d->fd,energy,5);
  137. sprintf(energy," %4d",d->maxenergy);
  138. poscurs(d,14,9); 
  139. write(d->fd,energy,5);
  140. }
  141.  
  142. plotmaxenergy(cp)
  143. register struct player *cp;
  144. {
  145. char energy[5];    
  146.  
  147. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  148. sprintf(energy," %4d",cp->maxenergy);
  149. poscurs(cp,14,9); 
  150. write(cp->fd,energy,5);
  151. }
  152.  
  153. plotvelocity(cp)
  154. register struct player *cp;
  155. {
  156. char velocity[14];    
  157.  
  158. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  159. sprintf(velocity,"x:%3d y:%3d  ",cp->xvel,cp->yvel);
  160. poscurs(cp,6,5); 
  161. write(cp->fd,velocity,13);
  162. }
  163.  
  164. plotposition(cp)
  165. register struct player *cp;
  166. {
  167. char position[14];
  168.  
  169. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  170. poscurs(cp,6,3); 
  171. sprintf(position,"x:%3d y:%3d  ",cp->xpos,cp->ypos);
  172. write(cp->fd,position,13);
  173. }
  174.  
  175. plotphaserbanks(cp)
  176. register struct player *cp;
  177. {
  178. char phaser[5];
  179. char c;
  180.  
  181. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  182. if (cp->weaponselect==0) c='s'; else c=' ';
  183. sprintf(phaser,"%c %2d",c,cp->phaserbanks);
  184. poscurs(cp,14,18); 
  185. write(cp->fd,phaser,4);
  186.  
  187. sprintf(phaser,"%2d",cp->phaserreach);
  188. poscurs(cp,7,19); 
  189. write(cp->fd,phaser,2);
  190. sprintf(phaser,"  %2d",cp->maxphaser);
  191. poscurs(cp,14,19); 
  192. write(cp->fd,phaser,4);
  193. }
  194.  
  195. plotphotontorpedos(cp)
  196. register struct player *cp;
  197. {
  198. char photon[5];
  199. char c;
  200.  
  201. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  202. if (cp->weaponselect==1) c='s'; else c=' ';
  203. sprintf(photon,"%c %2d",c,cp->photontorpedos);
  204. poscurs(cp,14,20); 
  205. write(cp->fd,photon,4);
  206.  
  207. sprintf(photon,"%2d",cp->photonreach);
  208. poscurs(cp,7,21); 
  209. write(cp->fd,photon,2);
  210. sprintf(photon,"  %2d",cp->maxphoton);
  211. poscurs(cp,14,21); 
  212. write(cp->fd,photon,4);
  213. }
  214.  
  215. plotscore(cp)
  216. register struct player *cp;
  217. {
  218. char score[8];
  219.  
  220. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  221. sprintf(score," %6d",cp->score);
  222. poscurs(cp,9,23); 
  223. write(cp->fd,score,7);
  224. }
  225.  
  226.  
  227. plotdata(cp)
  228. register struct player *cp;
  229. {
  230. if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  231. plotvelocity(cp);
  232. plotposition(cp);
  233. plotenergy(cp);
  234. plotmaxenergy(cp);
  235. plotcloakingdevice(cp);
  236. plotshields(cp);
  237. plotphaserbanks(cp);
  238. plotphotontorpedos(cp);
  239. plotstatus(cp,3);
  240. plotscore(cp);
  241. }
  242.  
  243. /* 
  244. *routine to redraw the console at anytime 
  245. */
  246.  
  247. redrawconsole(cp)
  248. register struct player *cp;
  249. {
  250.     if ((cp->id==ROMID)||(cp->id==KLINGID)) return(0);
  251.     clrscreen(cp);
  252.     plotdata(cp);
  253.     drawcross(cp);
  254.     drawconsole(cp);
  255. }
  256.  
  257.